#include "FrakOutVersion.h"

FrakOutVersion::FrakOutVersion(QDataStream::Version qtVersion,
                               unsigned int versionNumber,
                               const QString& versionString)
    : m_qtVersion(qtVersion)
    , m_versionNumber(versionNumber)
    , m_versionString(versionString)
{
}

const FrakOutVersion* const FrakOutVersion::Null()
{
    static FrakOutVersion version(QDataStream::Qt_4_6, 0x000000, "0.0.0");
    return &version;
}

const FrakOutVersion* const FrakOutVersion::V1_0_0()
{
    static FrakOutVersion version(QDataStream::Qt_4_6, 0x010000, "1.0.0");
    return &version;
}

const FrakOutVersion* const FrakOutVersion::V1_1_0()
{
    static FrakOutVersion version(QDataStream::Qt_4_7, 0x010100, "1.1.0");
    return &version;
}

QDataStream::Version FrakOutVersion::qtVersion() const
{
    return m_qtVersion;
}

const FrakOutVersion* const FrakOutVersion::version(unsigned int versionNumber)
{
    if (versionNumber == 0x010000)
        return V1_0_0();
    else if (versionNumber == 0x010100)
        return V1_1_0();
    else
        return Null();
}

unsigned int FrakOutVersion::versionNumber() const
{
    return m_versionNumber;
}

const QString FrakOutVersion::versionString() const
{
    return m_versionString;
}
